package GUIs;
import javax.persistence.EntityManager;
import javax.swing.*;

//author dimi

public class CustomerGUI extends javax.swing.JFrame {
    
    private EntityManager em;
    
    // Ορίζω τις φόρμες που θα ανοίγουν με τις επιλογές κουμπιών της CustomerGUI
    //private CustomerProfileGUI childForm;
    private ShoppingCartGUI childForm2;
    private PurchasesGUI childForm4;
    private CProfile_NewPasswordGUI childForm3;
    private CProfile_ChecksGUI childForm5;
    private CProfile_ManageProfileGUI childForm6;
    
    public CustomerGUI(EntityManager em) {
        this.em = em;
        initComponents();
        setLocationRelativeTo(null); // Κεντράρει το παράθυρο στην οθόνη
    } // end of CustomerGUI()

    
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        Panel_CustomerGUI_Welcome = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        Button_CustomerGUI_Exit = new javax.swing.JButton();
        MenuBar_CustomerOptions = new javax.swing.JMenuBar();
        Menu_CustomerOptions_Profile = new javax.swing.JMenu();
        MenuItem_ProfileManagement = new javax.swing.JMenuItem();
        MenuItem_NewPassword = new javax.swing.JMenuItem();
        MenuItem_Checks = new javax.swing.JMenuItem();
        Menu_CustomerOptions_Purchases = new javax.swing.JMenu();
        MenuItem_DoPurchases = new javax.swing.JMenuItem();
        MenuItem_ShowCart = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        Panel_CustomerGUI_Welcome.setBackground(new java.awt.Color(204, 0, 204));
        Panel_CustomerGUI_Welcome.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1, 1, new java.awt.Color(102, 0, 102)));
        Panel_CustomerGUI_Welcome.setToolTipText("");

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel1.setText("Καλωσήλθατε στην εφαρμογή online παραγγελιών");
        jLabel1.setVerticalAlignment(javax.swing.SwingConstants.BOTTOM);

        Button_CustomerGUI_Exit.setText("ΈΞΟΔΟΣ");
        Button_CustomerGUI_Exit.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Button_CustomerGUI_ExitActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout Panel_CustomerGUI_WelcomeLayout = new javax.swing.GroupLayout(Panel_CustomerGUI_Welcome);
        Panel_CustomerGUI_Welcome.setLayout(Panel_CustomerGUI_WelcomeLayout);
        Panel_CustomerGUI_WelcomeLayout.setHorizontalGroup(
            Panel_CustomerGUI_WelcomeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, Panel_CustomerGUI_WelcomeLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 408, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, Panel_CustomerGUI_WelcomeLayout.createSequentialGroup()
                .addGap(0, 0, Short.MAX_VALUE)
                .addComponent(Button_CustomerGUI_Exit))
        );
        Panel_CustomerGUI_WelcomeLayout.setVerticalGroup(
            Panel_CustomerGUI_WelcomeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, Panel_CustomerGUI_WelcomeLayout.createSequentialGroup()
                .addContainerGap(132, Short.MAX_VALUE)
                .addComponent(jLabel1)
                .addGap(105, 105, 105)
                .addComponent(Button_CustomerGUI_Exit))
        );

        MenuBar_CustomerOptions.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true));

        Menu_CustomerOptions_Profile.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        Menu_CustomerOptions_Profile.setText("-> Μενού Διαχείρισης Προφίλ");

        MenuItem_ProfileManagement.setText("Επεξεργασία Προφίλ");
        MenuItem_ProfileManagement.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                MenuItem_ProfileManagementActionPerformed(evt);
            }
        });
        Menu_CustomerOptions_Profile.add(MenuItem_ProfileManagement);

        MenuItem_NewPassword.setText("Αλλαγή Κωδικού");
        MenuItem_NewPassword.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                MenuItem_NewPasswordActionPerformed(evt);
            }
        });
        Menu_CustomerOptions_Profile.add(MenuItem_NewPassword);

        MenuItem_Checks.setText("Επιταγές");
        MenuItem_Checks.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                MenuItem_ChecksActionPerformed(evt);
            }
        });
        Menu_CustomerOptions_Profile.add(MenuItem_Checks);

        MenuBar_CustomerOptions.add(Menu_CustomerOptions_Profile);

        Menu_CustomerOptions_Purchases.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(255, 204, 255), 1, true));
        Menu_CustomerOptions_Purchases.setText("-> Μενού Αγορών");
        Menu_CustomerOptions_Purchases.setAlignmentX(1.0F);

        MenuItem_DoPurchases.setText("Πραγματοποίηση Αγορών");
        MenuItem_DoPurchases.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                MenuItem_DoPurchasesActionPerformed(evt);
            }
        });
        Menu_CustomerOptions_Purchases.add(MenuItem_DoPurchases);

        MenuItem_ShowCart.setText("Προβολή Καλαθιού");
        MenuItem_ShowCart.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                MenuItem_ShowCartActionPerformed(evt);
            }
        });
        Menu_CustomerOptions_Purchases.add(MenuItem_ShowCart);

        MenuBar_CustomerOptions.add(Menu_CustomerOptions_Purchases);

        setJMenuBar(MenuBar_CustomerOptions);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(Panel_CustomerGUI_Welcome, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(Panel_CustomerGUI_Welcome, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void Button_CustomerGUI_ExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Button_CustomerGUI_ExitActionPerformed
        System.out.println("Επιλογή Εξόδου από τη φόρμα & επιστροφή στο παράθυρο login");
        LoginGUI lg = new LoginGUI(em); // Επιστρέφει στο παράθυρο login. 
                                      // Μπορεί και να αφαιρεθεί και να χρησιμοποιήσουμε το System.exit(0);
	lg.setVisible(true);
        dispose(); // καταστρέφεται το τρέχον παράθυρο
       // System.exit(0);
        
    }//GEN-LAST:event_Button_CustomerGUI_ExitActionPerformed
    // end of Button_CustomerGUI_ExitActionPerformed
    
   
    private void MenuItem_ProfileManagementActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItem_ProfileManagementActionPerformed
        System.out.println("Σύνδεση με Γραφικό Περιβάλλον Επεξεργασίας Προφίλ");
        
        // Όταν επιλέξει ο χρήστης αυτό το κουμπί, εισερχόμαστε στη φόρμα 
        // CProfile_ManageProfileGUI, που θέτουμε ως childForm6
        childForm6 = new CProfile_ManageProfileGUI(this, em);
        
        // Ενεργοποιούμε το νέο παράθυρο Διαχείρισης Προφίλ
        childForm6.setVisible(true);
        
        // Απενεργοποιούμε το τρέχον παράθυρο CustomerGUI
        setEnabled(false);
    }//GEN-LAST:event_MenuItem_ProfileManagementActionPerformed
    
    
    private void MenuItem_DoPurchasesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItem_DoPurchasesActionPerformed
        System.out.println("Σύνδεση με Γραφικό Περιβάλλον Διαχείρισης Αγορών");
        
        // Όταν επιλέξει ο χρήστης αυτό το κουμπί, εισερχόμαστε στη φόρμα Αγορών
        // , που θέτουμε ως childForm4
        childForm4 = new PurchasesGUI(this, em);
        
        // Ενεργοποιούμε το νέο παράθυρο Διαχείρισης Προφίλ
        childForm4.setVisible(true);
        
        // Απενεργοποιούμε το τρέχον παράθυρο CustomerGUI
        setEnabled(false);
    }//GEN-LAST:event_MenuItem_DoPurchasesActionPerformed

    private void MenuItem_ShowCartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItem_ShowCartActionPerformed
        System.out.println("Σύνδεση με Γραφικό Περιβάλλον Διαχείρισης Καλαθιού");
        
        // Όταν επιλέξει ο χρήστης αυτό το κουμπί, εισερχόμαστε στη φόρμα Καλαθιού
        // , που θέτουμε ως childForm2
        childForm2 = new ShoppingCartGUI(this, em);
        
        // Ενεργοποιούμε το νέο παράθυρο Διαχείρισης Προφίλ
        childForm2.setVisible(true);
        
        // Απενεργοποιούμε το τρέχον παράθυρο CustomerGUI
        setEnabled(false);     
    }//GEN-LAST:event_MenuItem_ShowCartActionPerformed

    private void MenuItem_NewPasswordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItem_NewPasswordActionPerformed
        // Σύνδεση με CProfile_NewPasswordGUI
        
        System.out.println("Σύνδεση με Γραφικό Περιβάλλον Αλλαγής Κωδικού Εισόδου");
        
        // Όταν επιλέξει ο χρήστης αυτό το κουμπί, εισερχόμαστε στη φόρμα 
        // CProfile_NewPasswordGUI, που θέτουμε ως childForm
        childForm3 = new CProfile_NewPasswordGUI(this, em);
        
        // Ενεργοποιούμε το νέο παράθυρο Διαχείρισης Προφίλ
        childForm3.setVisible(true);
        
        // Απενεργοποιούμε το τρέχον παράθυρο CustomerGUI
        setEnabled(false);
    
    }//GEN-LAST:event_MenuItem_NewPasswordActionPerformed

    private void MenuItem_ChecksActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItem_ChecksActionPerformed
        System.out.println("Επιλογή Κουμπιού Επιταγών");
        
        // Όταν επιλέξει ο χρήστης αυτό το κουμπί, εισερχόμαστε στη φόρμα 
        // CProfile_NewPasswordGUI, που θέτουμε ως childForm3
        childForm5 = new CProfile_ChecksGUI(this, em);
        
        // Ενεργοποιούμε το νέο παράθυρο Διαχείρισης Προφίλ
        childForm5.setVisible(true);

        // Απενεργοποιούμε το τρέχον παράθυρο CustomerGUI
        setEnabled(false);

    }//GEN-LAST:event_MenuItem_ChecksActionPerformed

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        System.out.println("Επιλογή Εξόδου από τη φόρμα & επιστροφή στο παράθυρο login");
        LoginGUI lg = new LoginGUI(em); // Επιστρέφει στο παράθυρο login. 
                                      // Μπορεί και να αφαιρεθεί και να χρησιμοποιήσουμε το System.exit(0);
	lg.setVisible(true);
        dispose(); // καταστρέφεται το τρέχον παράθυρο
       // System.exit(0);
        
    }//GEN-LAST:event_formWindowClosing
    // end of Button_CustomerGUI_PurchasesActionPerformed(
   
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton Button_CustomerGUI_Exit;
    private javax.swing.JMenuBar MenuBar_CustomerOptions;
    private javax.swing.JMenuItem MenuItem_Checks;
    private javax.swing.JMenuItem MenuItem_DoPurchases;
    private javax.swing.JMenuItem MenuItem_NewPassword;
    private javax.swing.JMenuItem MenuItem_ProfileManagement;
    private javax.swing.JMenuItem MenuItem_ShowCart;
    private javax.swing.JMenu Menu_CustomerOptions_Profile;
    private javax.swing.JMenu Menu_CustomerOptions_Purchases;
    private javax.swing.JPanel Panel_CustomerGUI_Welcome;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration//GEN-END:variables

} // end of public class CustomerGUI
